package net.cyndeline.components.world

import net.cyndeline.entitySystem.Component
import scala.collection.immutable.Queue
import net.cyndeline.entitySystem.EntityRef
import com.escalatesoft.subcut.inject.BindingModule
import com.escalatesoft.subcut.inject.Injectable
import net.cyndeline.game.TurnHandler

/**
 * Keeps track of which entity is currently allowed to
 * perform a number of actions.
 */
trait TurnStorageComponent extends Component {
  
  /** The current state of the queue. */
  def turnHandler: TurnHandler
}

class TurnStorage(implicit val bindingModule: BindingModule) extends TurnStorageComponent with Injectable {
  val turnHandler = inject[TurnHandler]
  
  override def copy = this // Unique
}